package com.shuiyun.jtt.message.mapping;

import com.shuiyun.jtt.message.schema.Schema;

import java.util.HashMap;
import java.util.Map;

/**
 * @author shuiyun
 * @program device-simulator
 * @description 字段类型映射
 * @date 2022-04-25 23:01
 **/
public abstract class DataTypeMapping {

    /**
     * 缓存map
     */
    private final Map<Integer, Schema> dataTypeMap = new HashMap<>();

    protected DataTypeMapping() {
        this.addSchemas(this);
    }

    /**
     * 利用无参构造器调用自己的初始化方法
     *
     * @param schemaRegistry 实例
     * @author shuiyun
     * @date 2022/4/25 23:10
     */
    protected abstract void addSchemas(DataTypeMapping schemaRegistry);

    /**
     * 添加映射
     *
     * @param key   主键
     * @param value 类型
     * @return 自身
     * @author shuiyun
     * @date 2022/4/25 23:10
     */
    protected DataTypeMapping addMapping(Integer key, Schema value) {
        dataTypeMap.put(key, value);
        return this;
    }

    /**
     * 根据key获取对应的Schema
     *
     * @param key 主键
     * @return Schema
     * @author shuiyun
     * @date 2022/4/26 22:34
     */
    public Schema getSchema(Integer key) {
        return dataTypeMap.get(key);
    }
}
